import qs from "qs";
export const mixin = {
    methods: {
        //提示消息
        sucess() { },
        /* 查看关卡的学习情况接口封装 */
        LookAxios(url, obj) {
            this.$http({
                method: "post",
                data: qs.stringify(obj),
                url: url,
            }).then(({ data }) => {
                if (data.flag) {
                    let projectDatas = data.data;
                    if (this.Formation.length == 0) {
                        this.Formation.push(projectDatas);
                    }
                    this.imgurl = "http://" + data.data.fileurl
                    this.imgbig.push("http://" + data.data.fileurl)
                } else {
                    alert("错误");
                }
            });
        },
        /* 获得查看关卡信息的权限 */
        ArryDatas(obj1, urls, project) {
            this.$http({
                method: "post",
                data: qs.stringify(obj1),
                url: urls,
            }).then(({ data }) => {
                let Array = data
                //状态为1表示未开始
                if (project.status != "1" || Array.indexOf(project.id) != -1) {
                    this.$router.push({
                        name: "ProjectFormation",
                        query: {
                            Projects: JSON.stringify(project),
                        },
                    });
                    return
                } else {
                    this.$message.error("没有权限查看当前的关卡信息", this.sucess());
                }
            });
        },
        /* 查看用户拥有的权限权限 */
        LookResrouceB(id) {
            this.$http({
                method: "post",
                url: `resource/selectResrouceByUserId?userId=${id}`,
            }).then(({ data }) => {
                if (data.flag) {
                    data.data.forEach((item) => {
                        if (item.parentId === "002") {
                            this.resourceId.push(item.resourceId)
                        } else {
                            if (item.resourceId) {
                                this.projectResource.push(item.resourceId)
                            }
                        }
                    });

                }
            });
        },
        /* 点击阶段显示当前阶段下的关卡信息接口封装 */
        btnStage(url) {
            this.$http({
                method: "post",
                url: url,
            }).then(({ data }) => {
                if (data.flag) {
                    if (this.projects.length === 0) {
                        this.projects = data.data;
                    } else {
                        this.projects.splice(0, this.projects.length)
                        this.projects = data.data;
                    }

                }
            });
        },
        /* 开启一个关卡学习 */
        startProject(url, obj) {
            this.$http({
                url: url,
                method: 'post',
                data: qs.stringify(obj)
            }).then(({ data }) => {
                if (data.flag) {
                    this.$message({
                        message: '开启关卡成功',
                        type: 'success'
                    }, this.sucess());
                    this.reload();
                    this.dialogVisible = false;
                    this.form.start = "";
                    this.form.end = "";
                }
                else {
                    this.$message.error('开启关卡失败', this.sucess());
                }
            })
        },
        /* 关闭关卡 */
        closebtn(id) {
            let obj = {};
            obj.id = id;
            obj.username = this.$store.state.LoginData.userformation[0].username;
            let url = "customspass/updateClosedStatusById";
            this.$http({
                url: url,
                method: 'post',
                data: qs.stringify(obj)
            }).then(({ data }) => {
                if (data.flag) {
                    this.$message({
                        message: '关闭关卡成功',
                        type: 'success'
                    }, this.sucess());
                    this.reload()
                } else {
                    this.$message.error('关闭关卡失败', this.sucess());
                }
            })
        },
        /* 申请延期 */
        delayProject(url, obj) {
            this.$http({
                url: url,
                method: 'post',
                dataType: 'jsonp',
                data: qs.stringify(obj)
            }).then(({ data }) => {
                if (data.flag) {
                    this.$message({
                        message: '延期申请发送成功',
                        type: 'success'
                    }, this.sucess());
                    this.reload()
                    this.visible = false;
                } else {
                    this.$message.error('申请发送失败', this.sucess());
                }
            })
        },
        /* 发起验收申请 */
        sendCheck(url, obj) {
            this.$http({
                url: url,
                method: 'post',
                headers: {
                    "content-type": "application/json",
                },
                data: obj
            }).then(({ data }) => {
                if (data.flag) {
                    this.$message({
                        message: '验收申请发起成功',
                        type: 'success'
                    }, this.sucess());
                    this.reload()
                } else {
                    this.$message.error('验收申请发起失败', this.sucess());
                }
            })
        },
        /* 添加迭代/用户故事接口 */
        oncreamentSpurt(url, obj) {
            this.$http({
                method: "post",
                headers: {
                    "content-type": "application/json",
                },
                url: url,
                data: JSON.stringify(obj),

            }).then(({ data }) => {
                if (data.flag) {
                    this.$message(
                        {
                            message: "添加成功",
                            type: "success",
                        },
                        this.sucess()
                    );
                    this.reload1();
                    this.reload();
                } else {
                    this.$message.error(data.errorMsg, this.sucess());
                }
            });
        },
        // 用户编辑信息
        userInfoEdit(obj) {
            this.$http({
                method: "post",
                headers: {
                    "content-Type": "application/json",
                },
                url: `user/update`,
                data: obj,
            }).then(({ data }) => {
                if (data.flag) {
                    this.$message(
                        {
                            message: "编辑成功",
                            type: "success",
                        },
                        this.sucess()
                    );
                } else {
                    // this.$message.error("编辑失败", this.sucess());
                }
            });
        },

        //管理员界面
        // 表单关闭
        close() {
            this.formShow = false
            this.resetForm('ruleForm')
        },
        // 页面刷新
        PageRefresh() {
            this.$nextTick(function () {
                this.$store.state.Refresh.isRouterAlive = true;
            });
        },
        // 重置按钮
        resetForm(formName) {
            this.$refs[formName].resetFields();
        },
        // 成功弹框提示
        open2() {
            this.$message({
                message: '增加成功',
                type: "success",
            });
        },
        edit() {
            this.$message({
                message: '修改成功',
                type: "success",
            });
        },
        // 表单不能为空
        open4() {
            this.$message({
                message: "不能为空！",
                type: "error",
            });
        },
        // 删除成功弹框提示
        open3() {
            this.$message({
                message: "删除成功",
                type: "success",
            });
        },
        // 删除失败
        open5() {
            this.$message({
                message: "删除失败！",
                type: "error",
            });
        },
        // 修改表单隐藏
        cancle() {
            this.editShow = false;
        },
        // 删除按钮判断
        open() {
            this.$confirm("此操作将永久删除, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            })
                .then(() => {
                    this.ExecuteDelete();
                })
                .catch(() => {
                    this.$message({
                        type: "info",
                        message: "已取消删除",
                    });
                    this.PageRefresh()
                });
        },
        //当前在第几页
        handleCurrentChange(currentPage) {
            this.currentPage = currentPage
        }
    },
    // 监听筛选框是否为空
    watch: {
        //监听搜索内容是否为空，如果为空则重新访问数据库
        nowSelect() {
            if (this.nowSelect == "") {
                this.result()
            }
        }
    },
    computed: {
        //  输入检索内容
        tables() {
            const filterText = this.filterText;
            if (filterText) {
                // filter() 方法创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有元素。
                // 注意： filter() 不会对空数组进行检测。
                // 注意： filter() 不会改变原始数组。
                return this.tableData.filter((data) => {
                    //  console.log(Object.keys(data));
                    // some() 方法用于检测数组中的元素是否满足指定条件;
                    // some() 方法会依次执行数组的每个元素：
                    // 如果有一个元素满足条件，则表达式返回true , 剩余的元素不会再执行检测;
                    // 如果没有满足条件的元素，则返回false。
                    // 注意： some() 不会对空数组进行检测。
                    // 注意： some() 不会改变原始数组。
                    return Object.keys(data).some((key) => {
                        // indexOf() 返回某个指定的字符在某个字符串中首次出现的位置，如果没有找到就返回-1；
                        // 该方法对大小写敏感！所以之前需要toLowerCase()方法将所有查询到内容变为小写。
                        if (key == 'name') {
                            return String(data[key]).indexOf(filterText) > -1;
                        }
                    })
                })
            }
            return this.tableData;
        }
    },
}